
#ifndef __MINI_INC_H__
#define __MINI_INC_H__

#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <assert.h>
#include <signal.h>
#include <dirent.h>
#include <limits.h>

#include <sys/time.h>
#include <sys/types.h>
#include <sys/inotify.h>
#include <sys/select.h>

#define __X_DEBUG__
#define __MINI_DBG__

#define PREX "mini"

#define STATIC_INLINE static inline
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))

/* global debugging logging facilities */
#ifdef __X_DEBUG__

#define xprintf(X, ARG...) do {\
                    printf("%s:%s(%d): ", PREX, __FUNCTION__, __LINE__);\
                    printf((X), ##ARG);\
            } while (0)

#define xalert(X, ARG...) do {\
                    printf("!ALERT! %s:%s(%d): ", PREX, __FUNCTION__, __LINE__);\
                    printf((X), ##ARG);\
            } while (0)

#define xerror(X, ARG...) do {\
                    printf("!ERR! %s:(%s:%s:%d - %s): ", PREX, __FILE__, __FUNCTION__, __LINE__, strerror(errno));\
                    printf((X), ##ARG);\
                    exit(-1);\
            } while (0)

#define mini_error(X, ARG...) do {\
                    printf("!ERR! %s:(%s:%s:%d - %s): ", PREX, __FILE__, __FUNCTION__, __LINE__, strerror(errno));\
                    printf((X), ##ARG);\
                    exit(-1);\
            } while (0)

#define xsyslog(X, ARG...) syslog(LOG_INFO, (X), ##ARG)

#else

#define xprintf(X, ARG...)

#define xalert(X, ARG...) do {\
                    printf("!ALERT! %s:%s(%d): ", PREX, __FUNCTION__, __LINE__);\
                    printf((X), ##ARG);\
            } while (0)

#define xerror(X, ARG...) do {\
                    printf("!ERR! %s:(%s:%s:%d - %s): ", PREX, __FILE__, __FUNCTION__, __LINE__, strerror(errno));\
                    printf((X), ##ARG);\
                    exit(-1);\
            } while (0)

#define mini_error(X, ARG...) do {\
                    printf("!ERR! %s:(%s:%s:%d - %s): ", PREX, __FILE__, __FUNCTION__, __LINE__, strerror(errno));\
                    printf((X), ##ARG);\
                    exit(-1);\
            } while (0)

#define xsyslog(X, ARG...) syslog(LOG_INFO, (X), ##ARG)

#endif /* __X_DEBUG__ */


#include "mini_mm.h"


#define mini_perror perror
#define mini_printf printf

#endif /* __MINI_INC_H__ */

